E) typename & class

typename & class 키워드
1. typename과 class의 기능상의 차이는 거의 없다.
2. typename은 주로 중첩 타입을 명시할 때 사용한다.

타입임을 명시해주는데 사용
template <typename T>
class Foo{
// ...
};
template <class T>
class Foo{
// ...
};
하지만 아래의 경우에는 반드시 class 키워드를 사용하여야 한다.
// ,
template <template <typename, typename> class Container, typename Type>
C++17부터는 혼용해서 사용 가능하다.